/*输入一个长度为 n 的整数序列。

接下来再输入 m 个询问，每个询问输入一对 l,r。

对于每个询问，输出原序列中从第 l 个数到第 r 个数的和。

输入格式
第一行包含两个整数 n 和 m。

第二行包含 n 个整数，表示整数数列。

接下来 m 行，每行包含两个整数 l 和 r，表示一个询问的区间范围。

输出格式
共 m 行，每行输出一个询问的结果。

数据范围
1≤l≤r≤n,
1≤n,m≤100000,
−1000≤数列中元素的值≤1000
输入样例：
5 3
2 1 3 6 4
1 2
1 3
2 4
输出样例：
3
6
10*/
#include <bits/stdc++.h>

using namespace std;
int n,m;
vector<int> arr,sum;
int main()
{
    cin>>n>>m;
    int s = 0;
    arr.push_back(0);
    sum.push_back(0);

    for(int i=0;i<n;i++)
    {
        int temp;cin>>temp;arr.push_back(temp);
        s+=temp;sum.push_back(s); //S[i] = a[0]+...+a[i]
    }

    while(m--){
        //求arr[0] + ... arr[5] = sum[5] - sum[0] + arr[0]  or sum [5] - sum[-1] (所以只要是前缀和，一定要从下标1开始，下标0等于0)
        int l,r;cin>>l>>r;
        //下标为1开始，那就不用把第一个位置变为index为0了
        cout<<sum[r]-sum[l-1]<<endl; 
    }


    return 0;
}
